创建时间: | 2018/5/7 11:49 |
来源: | https://blog.csdn.net/javandroid/article/details/52959105 |
测试环境:
- | Version | ip | Port |
---|---|---|---|
nginx(可选) | |||
jdk | 1.7.0_79 | ||
tomcat1 | 7.0.70 | 127.0.0.1 | 8082 |
tomcat2 | 7.0.70 | 127.0.0.1 | 8083 |
redis | 2.8.9 | 127.0.0.1 | 6379 |
①从github上下载tomcat-redis-session-manager-版本 的源码。
②编译源码
使用命令行切换到源码目录,使用命令gradle build编译。
具体步骤请参考博客:http://blog.csdn.net/wanglipo/article/details/51669526
tomcat-redis-session-manager.jar
commons-pool2.jar
jedis.jar
将以上3个jar包拷贝到tomcat/lib下面。
在tomcat目录/conf/context.xml中配置如下(有几个tomcat参与管理session就要都配置)
注意:上面的配置要注意路径。
因为github上最新版已经将tomcat6和7,jdk6和7都兼容了,而以前则是分成不同工程。因此两者使用了不同的名称。
新版本使用的是com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve
旧版本使用的是com.radiadesign.catalina.session.RedisSessionHandlerValve
【如果使用的话,直接使用新版本即可】
注意:
因为是在同一台pc上部署的两个tomcat,所以需要将tomcat端口改成不一样的。
Tomcat1:
Tomcat2:
在两个tomcat中部署项目,这里简单处理如下。
在tomcat1的webapps下新建www目录,并在www下新建index.jsp文件。
文件内容如下:(如果是tomcat2则将”TomcatA”改为”TomcatB”)
现在可以进行测试了。启动redis,启动tomcat1和tomcat2。分别访问http://localhost:8082/www/index.jsp和http://localhost:8083/www/index.jsp
访问后浏览器结果如下:
测试结果说明:
很显然,这两个浏览器输出来自不同的tomcat。但是其sessionID却是一样的,说明session共享成功。
最后使用redis客户端查看一下保存进redis的内容:
说明使用redis来管理session时,将sessionID作为key保存在了redis。key的值发现是乱码,发现还有个TTL,自然就是过期时间了(刷新一下,该值在减小)。
再使用redis自带的客户端打开瞧瞧key的值,发现了熟悉的字样,出现了jar包目录相关的字符串,还有SessionSerialization(session序列化)。
到此,使用redis来管理session的测试结束。当然了,我们还可以加个nginx来将请求分发到tomcat1和tomcat2,访问时就不需要用两个浏览器窗口来测试了,具体过程也不会太复杂,可以参考下面的博客。
文中用到的资源下载:context.xml、index.jsp和三个jar包